iniciar-programa define-nueva-instruccion cuenta (n) como inicio si junto-a-zumbador y orientado-al-sur o frente-libre y junto-a-zumbador y orientado-al-sur entonces inicio coge-zumbador; si junto-a-zumbador entonces inicio coge-zumbador; si frente-libre entonces avanza; cuenta (sucede(0)); fin sino inicio deja-zumbador; si frente-libre entonces inicio avanza; fin sino inicio si frente-bloqueado y orientado-al-sur entonces inicio mientras no-orientado-al-norte hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-oeste hacer gira-izquierda; si frente-libre entonces inicio avanza; mientras no-orientado-al-sur hacer gira-izquierda; cuenta (0); fin sino inicio mientras no-orientado-al-este hacer gira-izquierda; mientras izquierda-bloqueada y frente-libre hacer avanza; si frente-bloqueado entonces inicio mientras no-orientado-al-sur hacer gira-izquierda; mientras izquierda-bloqueada y frente-libre hacer avanza; mientras no-orientado-al-este hacer gira-izquierda; si frente-libre entonces avanza; fin; si no-junto-a-zumbador entonces repetir n veces deja-zumbador; fin; fin; fin; cuenta(0); fin; fin; si frente-libre y orientado-al-sur entonces inicio avanza; cuenta (0); fin; si frente-bloqueado y orientado-al-sur entonces inicio mientras no-orientado-al-norte hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-oeste hacer gira-izquierda; si frente-libre entonces inicio avanza; mientras no-orientado-al-sur hacer gira-izquierda; cuenta (0); fin sino inicio mientras no-orientado-al-este hacer gira-izquierda; mientras izquierda-bloqueada y frente-libre hacer avanza; si frente-bloqueado entonces inicio mientras no-orientado-al-sur hacer gira-izquierda; mientras izquierda-bloqueada y frente-libre hacer avanza; mientras no-orientado-al-este hacer gira-izquierda; si frente-libre entonces avanza; fin; fin; fin; repetir n veces deja-zumbador; fin; define-nueva-instruccion llena (x) como inicio si junto-a-zumbador entonces inicio coge-zumbador ; llena (sucede(x)); fin sino inicio repetir x veces deja-zumbador; mientras no-orientado-al-oeste hacer gira-izquierda; si frente-libre entonces avanza; mientras no-orientado-al-sur hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-oeste hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-norte hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-este hacer gira-izquierda; mientras izquierda-bloqueada y frente-libre hacer avanza; si izquierda-bloqueada y frente-bloqueado entonces mientras no-orientado-al-sur hacer gira-izquierda; si izquierda-libre entonces inicio gira-izquierda; gira-izquierda; si frente-libre entonces avanza; mientras no-orientado-al-sur hacer gira-izquierda; fin; repetir x veces inicio si frente-libre entonces inicio repetir 2 veces deja-zumbador; avanza; fin sino si frente-bloqueado y orientado-al-sur y no-junto-a-zumbador entonces repetir 2 veces deja-zumbador; si frente-bloqueado y orientado-al-sur entonces mientras no-orientado-al-oeste hacer gira-izquierda; si frente-libre y orientado-al-oeste entonces inicio avanza; fin sino si frente-bloqueado y orientado-al-oeste entonces apagate; si frente-bloqueado entonces inicio mientras no-orientado-al-norte hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-sur hacer gira-izquierda; fin; fin; fin; fin; inicia-ejecucion mientras no-orientado-al-oeste hacer gira-izquierda; si frente-libre entonces avanza; mientras no-orientado-al-norte hacer gira-izquierda; mientras frente-libre hacer avanza; mientras no-orientado-al-sur hacer gira-izquierda; cuenta(0); si no-junto-a-zumbador entonces inicio gira-izquierda; gira-izquierda; si frente-libre entonces avanza; fin; si junto-a-zumbador entonces llena (0); apagate; termina-ejecucion finalizar-programa